package kgame5.enginex {
import kgame5.enginex.event.SendCommandEvent;

import flash.events.EventDispatcher;

/**
 * @author kk
 * 游戏中的命令，被执行
 * 添加、删除游戏单位
 * 调用其他命令
 * 处理EngineContext
 */
public class GameCommand extends EventDispatcher{
	
	protected var gamePlay:GamePlayX;//主要是添加，删除游戏单位用
	
	protected var senceWorld:ISenceWorld;
	public function GameCommand(){
	
	}
	
	//不再构造函数里传入此值，好处是不需要复写构造函数了。简化操作
	public function setGamePlay(p_gamePlay:GamePlayX):void{
		this.gamePlay=p_gamePlay;
		//view=gamePlay.getView();
		senceWorld=gamePlay.getWorld() as ISenceWorld;
	}
	
	//执行某种命令，如添加，删除，炮弹爆炸损伤目标等
	public function execute(data:Object):void{
		//操纵各个gu.各个gu自己的视图由自己状态机控制
		//这里主要是操控EngineContex里的各个东西？
	}
	
	//调用其他命令
	protected function sendCommand(commandName:String,data:Object):void{
		this.dispatchEvent(new SendCommandEvent(commandName,data));
	}
}
}
